{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-05-21T15:10:50.923313Z",
     "start_time": "2024-05-21T15:10:49.855425Z"
    }
   },
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ],
   "outputs": [],
   "execution_count": 3
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-16T03:09:53.816835Z",
     "start_time": "2024-05-16T03:09:53.797773Z"
    }
   },
   "cell_type": "code",
   "source": [
    "s1 = pd.Series(np.random.randn(10))\n",
    "s1"
   ],
   "id": "65189c68c2a2825f",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0.096294\n",
       "1    0.246023\n",
       "2    0.783562\n",
       "3    0.378272\n",
       "4   -0.973744\n",
       "5    0.423726\n",
       "6    0.812637\n",
       "7    1.064017\n",
       "8    1.233492\n",
       "9   -1.500641\n",
       "dtype: float64"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 9
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-16T03:09:56.258669Z",
     "start_time": "2024-05-16T03:09:56.241026Z"
    }
   },
   "cell_type": "code",
   "source": "s1.sort_values()",
   "id": "9f2e7e1a77167757",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9   -1.500641\n",
       "4   -0.973744\n",
       "0    0.096294\n",
       "1    0.246023\n",
       "3    0.378272\n",
       "5    0.423726\n",
       "2    0.783562\n",
       "6    0.812637\n",
       "7    1.064017\n",
       "8    1.233492\n",
       "dtype: float64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 10
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-16T03:10:08.658708Z",
     "start_time": "2024-05-16T03:10:08.648741Z"
    }
   },
   "cell_type": "code",
   "source": "s1.sort_values(ascending=False)",
   "id": "3f46d34263bb204f",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8    1.233492\n",
       "7    1.064017\n",
       "6    0.812637\n",
       "2    0.783562\n",
       "5    0.423726\n",
       "3    0.378272\n",
       "1    0.246023\n",
       "0    0.096294\n",
       "4   -0.973744\n",
       "9   -1.500641\n",
       "dtype: float64"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 11
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-16T03:11:59.534752Z",
     "start_time": "2024-05-16T03:11:59.506364Z"
    }
   },
   "cell_type": "code",
   "source": [
    "df1 = pd.DataFrame(np.random.randn(40).reshape(8, 5), columns=[\"a\", \"b\", \"c\", \"d\", \"e\"])\n",
    "df1"
   ],
   "id": "b93a3c28ed50355f",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "          a         b         c         d         e\n",
       "0  0.350712 -1.316005  2.132168  0.203407  0.529587\n",
       "1  0.104772 -1.310103  0.240843 -0.238698  0.354407\n",
       "2  0.635868 -1.293853  1.327136 -0.340708  0.527144\n",
       "3 -1.298250  0.163647  0.787421 -0.588765  0.830555\n",
       "4  0.014752 -0.629217  0.298455  1.575776 -0.340874\n",
       "5  0.066843 -1.405461 -0.083189 -0.469972  0.737330\n",
       "6 -0.423879 -0.737660 -1.932324 -0.681345  0.874948\n",
       "7  0.293884  0.816206 -0.207137  1.283710 -1.215058"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "      <th>d</th>\n",
       "      <th>e</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.350712</td>\n",
       "      <td>-1.316005</td>\n",
       "      <td>2.132168</td>\n",
       "      <td>0.203407</td>\n",
       "      <td>0.529587</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.104772</td>\n",
       "      <td>-1.310103</td>\n",
       "      <td>0.240843</td>\n",
       "      <td>-0.238698</td>\n",
       "      <td>0.354407</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.635868</td>\n",
       "      <td>-1.293853</td>\n",
       "      <td>1.327136</td>\n",
       "      <td>-0.340708</td>\n",
       "      <td>0.527144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.298250</td>\n",
       "      <td>0.163647</td>\n",
       "      <td>0.787421</td>\n",
       "      <td>-0.588765</td>\n",
       "      <td>0.830555</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.014752</td>\n",
       "      <td>-0.629217</td>\n",
       "      <td>0.298455</td>\n",
       "      <td>1.575776</td>\n",
       "      <td>-0.340874</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.066843</td>\n",
       "      <td>-1.405461</td>\n",
       "      <td>-0.083189</td>\n",
       "      <td>-0.469972</td>\n",
       "      <td>0.737330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>-0.423879</td>\n",
       "      <td>-0.737660</td>\n",
       "      <td>-1.932324</td>\n",
       "      <td>-0.681345</td>\n",
       "      <td>0.874948</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.293884</td>\n",
       "      <td>0.816206</td>\n",
       "      <td>-0.207137</td>\n",
       "      <td>1.283710</td>\n",
       "      <td>-1.215058</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 14
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-16T03:12:35.855191Z",
     "start_time": "2024-05-16T03:12:35.825683Z"
    }
   },
   "cell_type": "code",
   "source": "df1.sort_values(\"a\", ascending=False)",
   "id": "cac2732025972de2",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "          a         b         c         d         e\n",
       "2  0.635868 -1.293853  1.327136 -0.340708  0.527144\n",
       "0  0.350712 -1.316005  2.132168  0.203407  0.529587\n",
       "7  0.293884  0.816206 -0.207137  1.283710 -1.215058\n",
       "1  0.104772 -1.310103  0.240843 -0.238698  0.354407\n",
       "5  0.066843 -1.405461 -0.083189 -0.469972  0.737330\n",
       "4  0.014752 -0.629217  0.298455  1.575776 -0.340874\n",
       "6 -0.423879 -0.737660 -1.932324 -0.681345  0.874948\n",
       "3 -1.298250  0.163647  0.787421 -0.588765  0.830555"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "      <th>d</th>\n",
       "      <th>e</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.635868</td>\n",
       "      <td>-1.293853</td>\n",
       "      <td>1.327136</td>\n",
       "      <td>-0.340708</td>\n",
       "      <td>0.527144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.350712</td>\n",
       "      <td>-1.316005</td>\n",
       "      <td>2.132168</td>\n",
       "      <td>0.203407</td>\n",
       "      <td>0.529587</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.293884</td>\n",
       "      <td>0.816206</td>\n",
       "      <td>-0.207137</td>\n",
       "      <td>1.283710</td>\n",
       "      <td>-1.215058</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.104772</td>\n",
       "      <td>-1.310103</td>\n",
       "      <td>0.240843</td>\n",
       "      <td>-0.238698</td>\n",
       "      <td>0.354407</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.066843</td>\n",
       "      <td>-1.405461</td>\n",
       "      <td>-0.083189</td>\n",
       "      <td>-0.469972</td>\n",
       "      <td>0.737330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.014752</td>\n",
       "      <td>-0.629217</td>\n",
       "      <td>0.298455</td>\n",
       "      <td>1.575776</td>\n",
       "      <td>-0.340874</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>-0.423879</td>\n",
       "      <td>-0.737660</td>\n",
       "      <td>-1.932324</td>\n",
       "      <td>-0.681345</td>\n",
       "      <td>0.874948</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.298250</td>\n",
       "      <td>0.163647</td>\n",
       "      <td>0.787421</td>\n",
       "      <td>-0.588765</td>\n",
       "      <td>0.830555</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 16
  },
  {
   "metadata": {},
   "cell_type": "raw",
   "source": "DataFrame merge",
   "id": "b87579b41d932e7f"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-16T08:26:17.242446Z",
     "start_time": "2024-05-16T08:26:17.216021Z"
    }
   },
   "cell_type": "code",
   "source": [
    "df1 = pd.DataFrame({\"key\":[\"a\", \"b\", \"c\", \"a\"], \"dataset1\": [1,2,3,4]})\n",
    "df2 = pd.DataFrame({\"key\":[\"a\", \"y\", \"x\"], \"dataset2\": [4,5,6]})\n",
    "pd.merge(df1, df2)"
   ],
   "id": "506be7ec19eeba63",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "  key  dataset1  dataset2\n",
       "0   a         1         4\n",
       "1   a         4         4"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>key</th>\n",
       "      <th>dataset1</th>\n",
       "      <th>dataset2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>a</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>a</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 4
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-16T08:26:56.103616Z",
     "start_time": "2024-05-16T08:26:56.074173Z"
    }
   },
   "cell_type": "code",
   "source": "pd.merge(df1, df2, on=\"key\", how=\"left\")",
   "id": "85075e8d234ed898",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "  key  dataset1  dataset2\n",
       "0   a         1       4.0\n",
       "1   b         2       NaN\n",
       "2   c         3       NaN\n",
       "3   a         4       4.0"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>key</th>\n",
       "      <th>dataset1</th>\n",
       "      <th>dataset2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>a</td>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>b</td>\n",
       "      <td>2</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>c</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>a</td>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 5
  },
  {
   "metadata": {},
   "cell_type": "raw",
   "source": "Concatenate",
   "id": "4096c11bf6b5e965"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-16T08:38:07.440104Z",
     "start_time": "2024-05-16T08:38:07.424657Z"
    }
   },
   "cell_type": "code",
   "source": [
    "s1 = pd.Series([1,2,3], index=[\"a\", \"b\", \"c\"])\n",
    "s1"
   ],
   "id": "71bea9612354fde",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "a    1\n",
       "b    2\n",
       "c    3\n",
       "dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 6
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-16T08:38:35.039086Z",
     "start_time": "2024-05-16T08:38:35.014299Z"
    }
   },
   "cell_type": "code",
   "source": [
    "s2 = pd.Series([4,5,6], index=[\"a\", \"b\", \"c\"])\n",
    "s2"
   ],
   "id": "2012e1587a8abdb7",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "a    4\n",
       "b    5\n",
       "c    6\n",
       "dtype: int64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 7
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-16T08:39:26.400585Z",
     "start_time": "2024-05-16T08:39:26.390971Z"
    }
   },
   "cell_type": "code",
   "source": "pd.concat([s1, s2], axis=1)",
   "id": "50e50b2dc0a19107",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "pandas.core.frame.DataFrame"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 11
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-16T08:44:14.998490Z",
     "start_time": "2024-05-16T08:44:14.971485Z"
    }
   },
   "cell_type": "code",
   "source": [
    "df3 = pd.DataFrame({\n",
    "    \"1\": [1,2,np.nan],\n",
    "    \"2\": [4,5,6],\n",
    "    \"3\": [np.nan, np.nan, np.nan]\n",
    "})\n",
    "df3"
   ],
   "id": "4f62f807eeb793a5",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "     1  2   3\n",
       "0  1.0  4 NaN\n",
       "1  2.0  5 NaN\n",
       "2  NaN  6 NaN"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>5</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>NaN</td>\n",
       "      <td>6</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 13
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-16T08:44:47.555087Z",
     "start_time": "2024-05-16T08:44:47.539096Z"
    }
   },
   "cell_type": "code",
   "source": [
    "df4 = pd.DataFrame({\n",
    "    \"1\": [1,2,3],\n",
    "    \"2\": [np.nan, np.nan, np.nan],\n",
    "    \"3\": [7,8,9]\n",
    "})\n",
    "df4"
   ],
   "id": "ace1c8378a04a681",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   1   2  3\n",
       "0  1 NaN  7\n",
       "1  2 NaN  8\n",
       "2  3 NaN  9"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 14
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-16T08:45:28.570389Z",
     "start_time": "2024-05-16T08:45:28.542798Z"
    }
   },
   "cell_type": "code",
   "source": "df3.combine_first(df4)",
   "id": "54073df00ae87c7f",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "     1  2    3\n",
       "0  1.0  4  7.0\n",
       "1  2.0  5  8.0\n",
       "2  3.0  6  9.0"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>5</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>6</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 17
  },
  {
   "metadata": {},
   "cell_type": "raw",
   "source": "数据清洗",
   "id": "f363b5854a2029e3"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T05:11:51.659656Z",
     "start_time": "2024-05-17T05:11:48.801611Z"
    }
   },
   "cell_type": "code",
   "source": [
    "df1 = pd.read_excel(\"./某淘宝商家网络销售数据.xlsx\")\n",
    "df1"
   ],
   "id": "129d5e866538fa30",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "           订单日期       发货日期                顾客姓名         订单单号  区域 发货城市 目的省份  \\\n",
       "0    2010-10-13 2010-10-13  Muhammed MacIntyre  10021265709  华北   广州  河北省   \n",
       "1    2012-02-20 2012-02-20         Ruben Dartt  10021250753  华南   广州  河南省   \n",
       "2    2011-07-15 2011-07-15       Liz Pelletier  10021257699  华南   广州  广东省   \n",
       "3    2011-07-15 2011-07-15       Liz Pelletier  10021258358  华北   广州  内蒙古   \n",
       "4    2011-07-15 2011-07-15       Liz Pelletier  10021249836  华北   广州  内蒙古   \n",
       "...         ...        ...                 ...          ...  ..  ...  ...   \n",
       "8562 2012-11-15 2012-11-15             Amy Cox  10021493994  西北   广州  陕西省   \n",
       "8563 2012-11-15 2012-11-15            Amy Hunt  10021509540  华东   广州  江苏省   \n",
       "8564 2012-11-15 2012-11-15            Amy Hunt  10021249146  华南   广州  广东省   \n",
       "8565 2009-01-23 2009-01-23            Amy Hunt  10021687707  华南   广州  广东省   \n",
       "8566 2011-05-27 2011-05-27            Amy Hunt  10021606289  华南   广州  广东省   \n",
       "\n",
       "        目的省份（拼音）  目的城市      目的城市（拼音）  ...          快递单号       签收日期        订单额  \\\n",
       "0          Hebei   石家庄  Shijiazhuang  ...  100831535382 2010-10-20   261.5400   \n",
       "1          Henan    郑州     Zhengzhou  ...  100114340738 2012-02-21     6.9300   \n",
       "2       Guandong    汕头       Shantou  ...  100826632092 2011-07-17  2808.0800   \n",
       "3     Nei Mongol  呼和浩特        Hohhot  ...  100926965841 2011-07-16  1761.4000   \n",
       "4     Nei Mongol  呼和浩特        Hohhot  ...  100810096112 2011-07-17   160.2335   \n",
       "...          ...   ...           ...  ...           ...        ...        ...   \n",
       "8562     Shaanxi    安康        Ankang  ...   10039512599 2012-11-16    18.9100   \n",
       "8563     Jiangsu    盐城      Yancheng  ...  100132372896 2012-11-16   685.7000   \n",
       "8564    Guandong    云浮         Yunfu  ...   10011786396 2012-11-16  1024.1650   \n",
       "8565    Guandong    云浮         Yunfu  ...   10043648784 2009-01-25  1383.2000   \n",
       "8566    Guandong    云浮         Yunfu  ...  100915955311 2011-05-29   211.4200   \n",
       "\n",
       "      订单数量    产品单价   运输成本       利润额  产品类别                           产品子类别  \\\n",
       "0        6   38.94  35.00  -213.250  办公用品          Storage & Organization   \n",
       "1        2    2.08   2.56    -4.640  办公用品   Scissors, Rulers and Trimmers   \n",
       "2       26  107.53   5.81  1054.820  家具产品              Office Furnishings   \n",
       "3       24   70.89  89.30 -1748.560  家具产品                          Tables   \n",
       "4       23    7.99   5.03   -85.129  数码电子    Telephones and Communication   \n",
       "...    ...     ...    ...       ...   ...                             ...   \n",
       "8562     3    3.89   7.01   -16.353  办公用品  Binders and Binder Accessories   \n",
       "8563     7   88.84  20.79   350.940  家具产品              Office Furnishings   \n",
       "8564    10  115.99   5.99  -105.699  数码电子    Telephones and Communication   \n",
       "8565    18   73.98  12.14   -23.440  数码电子            Computer Peripherals   \n",
       "8566    20    9.71   9.45  -113.520  办公用品          Storage & Organization   \n",
       "\n",
       "                                                   产品名称  \n",
       "0      Eldon Base for stackable storage shelf, platinum  \n",
       "1     Kleencut® Forged Office Shears by Acme United ...  \n",
       "2     Tenex Contemporary Contur Chairmats for Low an...  \n",
       "3                                  KI Conference Tables  \n",
       "4                          Bell Sonecor JB700 Caller ID  \n",
       "...                                                 ...  \n",
       "8562                                Avery Binder Labels  \n",
       "8563                    Luxo Adjustable Task Clamp Lamp  \n",
       "8564                                               2160  \n",
       "8565                 Keytronic 105-Key Spanish Keyboard  \n",
       "8566            Filing/Storage Totes and Swivel Casters  \n",
       "\n",
       "[8567 rows x 21 columns]"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>订单日期</th>\n",
       "      <th>发货日期</th>\n",
       "      <th>顾客姓名</th>\n",
       "      <th>订单单号</th>\n",
       "      <th>区域</th>\n",
       "      <th>发货城市</th>\n",
       "      <th>目的省份</th>\n",
       "      <th>目的省份（拼音）</th>\n",
       "      <th>目的城市</th>\n",
       "      <th>目的城市（拼音）</th>\n",
       "      <th>...</th>\n",
       "      <th>快递单号</th>\n",
       "      <th>签收日期</th>\n",
       "      <th>订单额</th>\n",
       "      <th>订单数量</th>\n",
       "      <th>产品单价</th>\n",
       "      <th>运输成本</th>\n",
       "      <th>利润额</th>\n",
       "      <th>产品类别</th>\n",
       "      <th>产品子类别</th>\n",
       "      <th>产品名称</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2010-10-13</td>\n",
       "      <td>2010-10-13</td>\n",
       "      <td>Muhammed MacIntyre</td>\n",
       "      <td>10021265709</td>\n",
       "      <td>华北</td>\n",
       "      <td>广州</td>\n",
       "      <td>河北省</td>\n",
       "      <td>Hebei</td>\n",
       "      <td>石家庄</td>\n",
       "      <td>Shijiazhuang</td>\n",
       "      <td>...</td>\n",
       "      <td>100831535382</td>\n",
       "      <td>2010-10-20</td>\n",
       "      <td>261.5400</td>\n",
       "      <td>6</td>\n",
       "      <td>38.94</td>\n",
       "      <td>35.00</td>\n",
       "      <td>-213.250</td>\n",
       "      <td>办公用品</td>\n",
       "      <td>Storage &amp; Organization</td>\n",
       "      <td>Eldon Base for stackable storage shelf, platinum</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2012-02-20</td>\n",
       "      <td>2012-02-20</td>\n",
       "      <td>Ruben Dartt</td>\n",
       "      <td>10021250753</td>\n",
       "      <td>华南</td>\n",
       "      <td>广州</td>\n",
       "      <td>河南省</td>\n",
       "      <td>Henan</td>\n",
       "      <td>郑州</td>\n",
       "      <td>Zhengzhou</td>\n",
       "      <td>...</td>\n",
       "      <td>100114340738</td>\n",
       "      <td>2012-02-21</td>\n",
       "      <td>6.9300</td>\n",
       "      <td>2</td>\n",
       "      <td>2.08</td>\n",
       "      <td>2.56</td>\n",
       "      <td>-4.640</td>\n",
       "      <td>办公用品</td>\n",
       "      <td>Scissors, Rulers and Trimmers</td>\n",
       "      <td>Kleencut® Forged Office Shears by Acme United ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2011-07-15</td>\n",
       "      <td>2011-07-15</td>\n",
       "      <td>Liz Pelletier</td>\n",
       "      <td>10021257699</td>\n",
       "      <td>华南</td>\n",
       "      <td>广州</td>\n",
       "      <td>广东省</td>\n",
       "      <td>Guandong</td>\n",
       "      <td>汕头</td>\n",
       "      <td>Shantou</td>\n",
       "      <td>...</td>\n",
       "      <td>100826632092</td>\n",
       "      <td>2011-07-17</td>\n",
       "      <td>2808.0800</td>\n",
       "      <td>26</td>\n",
       "      <td>107.53</td>\n",
       "      <td>5.81</td>\n",
       "      <td>1054.820</td>\n",
       "      <td>家具产品</td>\n",
       "      <td>Office Furnishings</td>\n",
       "      <td>Tenex Contemporary Contur Chairmats for Low an...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2011-07-15</td>\n",
       "      <td>2011-07-15</td>\n",
       "      <td>Liz Pelletier</td>\n",
       "      <td>10021258358</td>\n",
       "      <td>华北</td>\n",
       "      <td>广州</td>\n",
       "      <td>内蒙古</td>\n",
       "      <td>Nei Mongol</td>\n",
       "      <td>呼和浩特</td>\n",
       "      <td>Hohhot</td>\n",
       "      <td>...</td>\n",
       "      <td>100926965841</td>\n",
       "      <td>2011-07-16</td>\n",
       "      <td>1761.4000</td>\n",
       "      <td>24</td>\n",
       "      <td>70.89</td>\n",
       "      <td>89.30</td>\n",
       "      <td>-1748.560</td>\n",
       "      <td>家具产品</td>\n",
       "      <td>Tables</td>\n",
       "      <td>KI Conference Tables</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2011-07-15</td>\n",
       "      <td>2011-07-15</td>\n",
       "      <td>Liz Pelletier</td>\n",
       "      <td>10021249836</td>\n",
       "      <td>华北</td>\n",
       "      <td>广州</td>\n",
       "      <td>内蒙古</td>\n",
       "      <td>Nei Mongol</td>\n",
       "      <td>呼和浩特</td>\n",
       "      <td>Hohhot</td>\n",
       "      <td>...</td>\n",
       "      <td>100810096112</td>\n",
       "      <td>2011-07-17</td>\n",
       "      <td>160.2335</td>\n",
       "      <td>23</td>\n",
       "      <td>7.99</td>\n",
       "      <td>5.03</td>\n",
       "      <td>-85.129</td>\n",
       "      <td>数码电子</td>\n",
       "      <td>Telephones and Communication</td>\n",
       "      <td>Bell Sonecor JB700 Caller ID</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8562</th>\n",
       "      <td>2012-11-15</td>\n",
       "      <td>2012-11-15</td>\n",
       "      <td>Amy Cox</td>\n",
       "      <td>10021493994</td>\n",
       "      <td>西北</td>\n",
       "      <td>广州</td>\n",
       "      <td>陕西省</td>\n",
       "      <td>Shaanxi</td>\n",
       "      <td>安康</td>\n",
       "      <td>Ankang</td>\n",
       "      <td>...</td>\n",
       "      <td>10039512599</td>\n",
       "      <td>2012-11-16</td>\n",
       "      <td>18.9100</td>\n",
       "      <td>3</td>\n",
       "      <td>3.89</td>\n",
       "      <td>7.01</td>\n",
       "      <td>-16.353</td>\n",
       "      <td>办公用品</td>\n",
       "      <td>Binders and Binder Accessories</td>\n",
       "      <td>Avery Binder Labels</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8563</th>\n",
       "      <td>2012-11-15</td>\n",
       "      <td>2012-11-15</td>\n",
       "      <td>Amy Hunt</td>\n",
       "      <td>10021509540</td>\n",
       "      <td>华东</td>\n",
       "      <td>广州</td>\n",
       "      <td>江苏省</td>\n",
       "      <td>Jiangsu</td>\n",
       "      <td>盐城</td>\n",
       "      <td>Yancheng</td>\n",
       "      <td>...</td>\n",
       "      <td>100132372896</td>\n",
       "      <td>2012-11-16</td>\n",
       "      <td>685.7000</td>\n",
       "      <td>7</td>\n",
       "      <td>88.84</td>\n",
       "      <td>20.79</td>\n",
       "      <td>350.940</td>\n",
       "      <td>家具产品</td>\n",
       "      <td>Office Furnishings</td>\n",
       "      <td>Luxo Adjustable Task Clamp Lamp</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8564</th>\n",
       "      <td>2012-11-15</td>\n",
       "      <td>2012-11-15</td>\n",
       "      <td>Amy Hunt</td>\n",
       "      <td>10021249146</td>\n",
       "      <td>华南</td>\n",
       "      <td>广州</td>\n",
       "      <td>广东省</td>\n",
       "      <td>Guandong</td>\n",
       "      <td>云浮</td>\n",
       "      <td>Yunfu</td>\n",
       "      <td>...</td>\n",
       "      <td>10011786396</td>\n",
       "      <td>2012-11-16</td>\n",
       "      <td>1024.1650</td>\n",
       "      <td>10</td>\n",
       "      <td>115.99</td>\n",
       "      <td>5.99</td>\n",
       "      <td>-105.699</td>\n",
       "      <td>数码电子</td>\n",
       "      <td>Telephones and Communication</td>\n",
       "      <td>2160</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8565</th>\n",
       "      <td>2009-01-23</td>\n",
       "      <td>2009-01-23</td>\n",
       "      <td>Amy Hunt</td>\n",
       "      <td>10021687707</td>\n",
       "      <td>华南</td>\n",
       "      <td>广州</td>\n",
       "      <td>广东省</td>\n",
       "      <td>Guandong</td>\n",
       "      <td>云浮</td>\n",
       "      <td>Yunfu</td>\n",
       "      <td>...</td>\n",
       "      <td>10043648784</td>\n",
       "      <td>2009-01-25</td>\n",
       "      <td>1383.2000</td>\n",
       "      <td>18</td>\n",
       "      <td>73.98</td>\n",
       "      <td>12.14</td>\n",
       "      <td>-23.440</td>\n",
       "      <td>数码电子</td>\n",
       "      <td>Computer Peripherals</td>\n",
       "      <td>Keytronic 105-Key Spanish Keyboard</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8566</th>\n",
       "      <td>2011-05-27</td>\n",
       "      <td>2011-05-27</td>\n",
       "      <td>Amy Hunt</td>\n",
       "      <td>10021606289</td>\n",
       "      <td>华南</td>\n",
       "      <td>广州</td>\n",
       "      <td>广东省</td>\n",
       "      <td>Guandong</td>\n",
       "      <td>云浮</td>\n",
       "      <td>Yunfu</td>\n",
       "      <td>...</td>\n",
       "      <td>100915955311</td>\n",
       "      <td>2011-05-29</td>\n",
       "      <td>211.4200</td>\n",
       "      <td>20</td>\n",
       "      <td>9.71</td>\n",
       "      <td>9.45</td>\n",
       "      <td>-113.520</td>\n",
       "      <td>办公用品</td>\n",
       "      <td>Storage &amp; Organization</td>\n",
       "      <td>Filing/Storage Totes and Swivel Casters</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8567 rows × 21 columns</p>\n",
       "</div>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 6
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T05:11:59.616533Z",
     "start_time": "2024-05-17T05:11:59.597343Z"
    }
   },
   "cell_type": "code",
   "source": "len(df1)",
   "id": "cd7d9507a8543302",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8567"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 7
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T05:15:43.138104Z",
     "start_time": "2024-05-17T05:15:43.124926Z"
    }
   },
   "cell_type": "code",
   "source": "len(df1[\"顾客姓名\"].unique())",
   "id": "69c0b253a3494ee8",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "795"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 11
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T05:15:58.533746Z",
     "start_time": "2024-05-17T05:15:58.517244Z"
    }
   },
   "cell_type": "code",
   "source": "df1[\"顾客姓名\"].duplicated()",
   "id": "a53a3164a16ec113",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0       False\n",
       "1       False\n",
       "2       False\n",
       "3        True\n",
       "4        True\n",
       "        ...  \n",
       "8562     True\n",
       "8563     True\n",
       "8564     True\n",
       "8565     True\n",
       "8566     True\n",
       "Name: 顾客姓名, Length: 8567, dtype: bool"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 12
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T08:18:21.016878Z",
     "start_time": "2024-05-17T08:18:20.993880Z"
    }
   },
   "cell_type": "code",
   "source": "df1[\"顾客姓名\"].drop_duplicates()",
   "id": "3eeba75cd0ad6673",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0       Muhammed MacIntyre\n",
       "1              Ruben Dartt\n",
       "2            Liz Pelletier\n",
       "6          Julie Creighton\n",
       "8         Sample Company A\n",
       "               ...        \n",
       "6346         Maria Etezadi\n",
       "6521        Rick Huthwaite\n",
       "6874        Sharelle Roach\n",
       "7702         Tiffany House\n",
       "7868       Shirley Daniels\n",
       "Name: 顾客姓名, Length: 795, dtype: object"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 14
  },
  {
   "metadata": {},
   "cell_type": "raw",
   "source": "时间索引",
   "id": "d18e70e13008f4c5"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T08:53:57.683541Z",
     "start_time": "2024-05-17T08:53:57.656552Z"
    }
   },
   "cell_type": "code",
   "source": [
    "data_index = pd.date_range(\"2023-01-01\", periods=24, freq=\"M\")\n",
    "data_index"
   ],
   "id": "6102b7cbeca4738d",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2023-01-31', '2023-02-28', '2023-03-31', '2023-04-30',\n",
       "               '2023-05-31', '2023-06-30', '2023-07-31', '2023-08-31',\n",
       "               '2023-09-30', '2023-10-31', '2023-11-30', '2023-12-31',\n",
       "               '2024-01-31', '2024-02-29', '2024-03-31', '2024-04-30',\n",
       "               '2024-05-31', '2024-06-30', '2024-07-31', '2024-08-31',\n",
       "               '2024-09-30', '2024-10-31', '2024-11-30', '2024-12-31'],\n",
       "              dtype='datetime64[ns]', freq='M')"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T08:54:54.087276Z",
     "start_time": "2024-05-17T08:54:54.065799Z"
    }
   },
   "cell_type": "code",
   "source": [
    "s1 = pd.Series(np.random.randint(10, 100, size=24), index=data_index)\n",
    "s1"
   ],
   "id": "ae5b5ba47c96a94d",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2023-01-31    64\n",
       "2023-02-28    32\n",
       "2023-03-31    66\n",
       "2023-04-30    45\n",
       "2023-05-31    41\n",
       "2023-06-30    39\n",
       "2023-07-31    46\n",
       "2023-08-31    89\n",
       "2023-09-30    71\n",
       "2023-10-31    79\n",
       "2023-11-30    89\n",
       "2023-12-31    76\n",
       "2024-01-31    83\n",
       "2024-02-29    46\n",
       "2024-03-31    72\n",
       "2024-04-30    18\n",
       "2024-05-31    68\n",
       "2024-06-30    83\n",
       "2024-07-31    16\n",
       "2024-08-31    36\n",
       "2024-09-30    54\n",
       "2024-10-31    35\n",
       "2024-11-30    28\n",
       "2024-12-31    88\n",
       "Freq: M, dtype: int32"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 31
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T08:55:44.002039Z",
     "start_time": "2024-05-17T08:55:43.976457Z"
    }
   },
   "cell_type": "code",
   "source": "s1[\"2023\"]",
   "id": "280ea0400dfd76e",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2023-01-31    64\n",
       "2023-02-28    32\n",
       "2023-03-31    66\n",
       "2023-04-30    45\n",
       "2023-05-31    41\n",
       "2023-06-30    39\n",
       "2023-07-31    46\n",
       "2023-08-31    89\n",
       "2023-09-30    71\n",
       "2023-10-31    79\n",
       "2023-11-30    89\n",
       "2023-12-31    76\n",
       "Freq: M, dtype: int32"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 32
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T08:56:11.059322Z",
     "start_time": "2024-05-17T08:56:09.714772Z"
    }
   },
   "cell_type": "code",
   "source": "s1.plot()",
   "id": "8e432097a2fd49b5",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 33
  },
  {
   "metadata": {},
   "cell_type": "raw",
   "source": "数据分箱",
   "id": "c214648cd1e47660"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T09:04:05.287962Z",
     "start_time": "2024-05-17T09:04:05.268297Z"
    }
   },
   "cell_type": "code",
   "source": [
    "score_list = np.random.randint(0, 100, size=50)\n",
    "score_list"
   ],
   "id": "59b6cf408308c7d3",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([27, 94, 85, 52, 43, 94, 52, 80, 20, 29,  9, 77, 77, 69, 11, 23, 19,\n",
       "       86, 73, 96, 46, 69, 76, 84, 44, 35, 59, 68, 90, 40, 13, 91, 41, 11,\n",
       "       33, 83, 89, 41, 29, 44,  6, 44, 62,  3, 21, 28, 48, 77, 97, 32])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 37
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T09:19:23.599049Z",
     "start_time": "2024-05-17T09:19:23.579671Z"
    }
   },
   "cell_type": "code",
   "source": [
    "bins = [0,60,70,80,90,100]\n",
    "score_cat = pd.cut(score_list, bins)\n",
    "pd.value_counts(score_cat)"
   ],
   "id": "bbdfef68a3b23831",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0, 60]      29\n",
       "(70, 80]      6\n",
       "(80, 90]      6\n",
       "(90, 100]     5\n",
       "(60, 70]      4\n",
       "dtype: int64"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 57
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T09:10:08.909224Z",
     "start_time": "2024-05-17T09:10:08.898769Z"
    }
   },
   "cell_type": "code",
   "source": [
    "student_df = pd.DataFrame()\n",
    "student_df[\"score\"] = score_list"
   ],
   "id": "61ddff69dcab9e85",
   "outputs": [],
   "execution_count": 43
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T09:12:07.299248Z",
     "start_time": "2024-05-17T09:12:07.273147Z"
    }
   },
   "cell_type": "code",
   "source": "student_df[\"name\"] = [pd.util.testing.rands(3) for i in range(0,50)]",
   "id": "37362b790cb27765",
   "outputs": [],
   "execution_count": 48
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T09:19:26.938315Z",
     "start_time": "2024-05-17T09:19:26.918677Z"
    }
   },
   "cell_type": "code",
   "source": "student_df[\"level\"] = pd.cut(student_df[\"score\"], bins, labels=[\"不及格\",\"及格\",\"中等\",\"良好\",\"优秀\"])",
   "id": "186ef01bca61453e",
   "outputs": [],
   "execution_count": 58
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-17T09:19:28.418143Z",
     "start_time": "2024-05-17T09:19:28.403988Z"
    }
   },
   "cell_type": "code",
   "source": "student_df",
   "id": "a9d08a1ec4d79930",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "    score name level\n",
       "0      27  uLv   不及格\n",
       "1      94  ker    优秀\n",
       "2      85  bYk    良好\n",
       "3      52  TQB   不及格\n",
       "4      43  IiQ   不及格\n",
       "5      94  Auq    优秀\n",
       "6      52  YUk   不及格\n",
       "7      80  X0w    中等\n",
       "8      20  9ip   不及格\n",
       "9      29  QmQ   不及格\n",
       "10      9  guk   不及格\n",
       "11     77  DYi    中等\n",
       "12     77  NGg    中等\n",
       "13     69  7qf    及格\n",
       "14     11  SaG   不及格\n",
       "15     23  gUl   不及格\n",
       "16     19  pvS   不及格\n",
       "17     86  WxJ    良好\n",
       "18     73  2oC    中等\n",
       "19     96  vtQ    优秀\n",
       "20     46  Tjh   不及格\n",
       "21     69  oxw    及格\n",
       "22     76  IBr    中等\n",
       "23     84  Nck    良好\n",
       "24     44  aJF   不及格\n",
       "25     35  QFc   不及格\n",
       "26     59  8eJ   不及格\n",
       "27     68  rGe    及格\n",
       "28     90  y4z    良好\n",
       "29     40  xNL   不及格\n",
       "30     13  dgk   不及格\n",
       "31     91  M4J    优秀\n",
       "32     41  56I   不及格\n",
       "33     11  AdZ   不及格\n",
       "34     33  ywJ   不及格\n",
       "35     83  Gsg    良好\n",
       "36     89  er3    良好\n",
       "37     41  qGn   不及格\n",
       "38     29  Su9   不及格\n",
       "39     44  nS0   不及格\n",
       "40      6  e59   不及格\n",
       "41     44  Ak9   不及格\n",
       "42     62  IpY    及格\n",
       "43      3  Dgh   不及格\n",
       "44     21  s9n   不及格\n",
       "45     28  6r2   不及格\n",
       "46     48  X4x   不及格\n",
       "47     77  AGr    中等\n",
       "48     97  uFU    优秀\n",
       "49     32  BUY   不及格"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>score</th>\n",
       "      <th>name</th>\n",
       "      <th>level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>27</td>\n",
       "      <td>uLv</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>94</td>\n",
       "      <td>ker</td>\n",
       "      <td>优秀</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>85</td>\n",
       "      <td>bYk</td>\n",
       "      <td>良好</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>52</td>\n",
       "      <td>TQB</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>43</td>\n",
       "      <td>IiQ</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>94</td>\n",
       "      <td>Auq</td>\n",
       "      <td>优秀</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>52</td>\n",
       "      <td>YUk</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>80</td>\n",
       "      <td>X0w</td>\n",
       "      <td>中等</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>20</td>\n",
       "      <td>9ip</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>29</td>\n",
       "      <td>QmQ</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>9</td>\n",
       "      <td>guk</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>77</td>\n",
       "      <td>DYi</td>\n",
       "      <td>中等</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>77</td>\n",
       "      <td>NGg</td>\n",
       "      <td>中等</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>69</td>\n",
       "      <td>7qf</td>\n",
       "      <td>及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>11</td>\n",
       "      <td>SaG</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>23</td>\n",
       "      <td>gUl</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>19</td>\n",
       "      <td>pvS</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>86</td>\n",
       "      <td>WxJ</td>\n",
       "      <td>良好</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>73</td>\n",
       "      <td>2oC</td>\n",
       "      <td>中等</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>96</td>\n",
       "      <td>vtQ</td>\n",
       "      <td>优秀</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>46</td>\n",
       "      <td>Tjh</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>69</td>\n",
       "      <td>oxw</td>\n",
       "      <td>及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>76</td>\n",
       "      <td>IBr</td>\n",
       "      <td>中等</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>84</td>\n",
       "      <td>Nck</td>\n",
       "      <td>良好</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>44</td>\n",
       "      <td>aJF</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>35</td>\n",
       "      <td>QFc</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>59</td>\n",
       "      <td>8eJ</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>68</td>\n",
       "      <td>rGe</td>\n",
       "      <td>及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>90</td>\n",
       "      <td>y4z</td>\n",
       "      <td>良好</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>40</td>\n",
       "      <td>xNL</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>13</td>\n",
       "      <td>dgk</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>91</td>\n",
       "      <td>M4J</td>\n",
       "      <td>优秀</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>41</td>\n",
       "      <td>56I</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>11</td>\n",
       "      <td>AdZ</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>33</td>\n",
       "      <td>ywJ</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>83</td>\n",
       "      <td>Gsg</td>\n",
       "      <td>良好</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>89</td>\n",
       "      <td>er3</td>\n",
       "      <td>良好</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>41</td>\n",
       "      <td>qGn</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>29</td>\n",
       "      <td>Su9</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>44</td>\n",
       "      <td>nS0</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>6</td>\n",
       "      <td>e59</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>44</td>\n",
       "      <td>Ak9</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>62</td>\n",
       "      <td>IpY</td>\n",
       "      <td>及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>3</td>\n",
       "      <td>Dgh</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>21</td>\n",
       "      <td>s9n</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>28</td>\n",
       "      <td>6r2</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>48</td>\n",
       "      <td>X4x</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>77</td>\n",
       "      <td>AGr</td>\n",
       "      <td>中等</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>97</td>\n",
       "      <td>uFU</td>\n",
       "      <td>优秀</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>32</td>\n",
       "      <td>BUY</td>\n",
       "      <td>不及格</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 59
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-21T15:10:58.834856Z",
     "start_time": "2024-05-21T15:10:58.799578Z"
    }
   },
   "cell_type": "code",
   "source": [
    "data_hotel = pd.read_csv(\"./t_hotel.csv\")\n",
    "data_hotel"
   ],
   "id": "bae1be78186a7604",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "       id            name       city  count\n",
       "0       1     Larry Reyes      Osaka    973\n",
       "1       2     Kojima Sara   Shanghai    597\n",
       "2       3    Ando Mitsuki   Columbus    720\n",
       "3       4    Zheng Shihan  Cambridge    577\n",
       "4       5   Chic Wing Fat   Shenzhen    918\n",
       "..    ...             ...        ...    ...\n",
       "995   996       Ma Yuning      Akron    644\n",
       "996   997   Lam Ching Wan   Shenzhen     42\n",
       "997   998  Noguchi Yamato    Chengdu    467\n",
       "998   999       Yu Jialun      Osaka    673\n",
       "999  1000          Fu Lan       Nara    466\n",
       "\n",
       "[1000 rows x 4 columns]"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>name</th>\n",
       "      <th>city</th>\n",
       "      <th>count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>Larry Reyes</td>\n",
       "      <td>Osaka</td>\n",
       "      <td>973</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>Kojima Sara</td>\n",
       "      <td>Shanghai</td>\n",
       "      <td>597</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>Ando Mitsuki</td>\n",
       "      <td>Columbus</td>\n",
       "      <td>720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>Zheng Shihan</td>\n",
       "      <td>Cambridge</td>\n",
       "      <td>577</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>Chic Wing Fat</td>\n",
       "      <td>Shenzhen</td>\n",
       "      <td>918</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>995</th>\n",
       "      <td>996</td>\n",
       "      <td>Ma Yuning</td>\n",
       "      <td>Akron</td>\n",
       "      <td>644</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>996</th>\n",
       "      <td>997</td>\n",
       "      <td>Lam Ching Wan</td>\n",
       "      <td>Shenzhen</td>\n",
       "      <td>42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>997</th>\n",
       "      <td>998</td>\n",
       "      <td>Noguchi Yamato</td>\n",
       "      <td>Chengdu</td>\n",
       "      <td>467</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>998</th>\n",
       "      <td>999</td>\n",
       "      <td>Yu Jialun</td>\n",
       "      <td>Osaka</td>\n",
       "      <td>673</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>999</th>\n",
       "      <td>1000</td>\n",
       "      <td>Fu Lan</td>\n",
       "      <td>Nara</td>\n",
       "      <td>466</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 4 columns</p>\n",
       "</div>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 4
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-21T15:14:52.716815Z",
     "start_time": "2024-05-21T15:14:52.673476Z"
    }
   },
   "cell_type": "code",
   "source": "data_hotel.groupby(\"city\")[\"count\"].sum().reset_index(name=\"count_sum\")",
   "id": "a8ef20ed405f83f3",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "           city  count_sum\n",
       "0         Akron      19677\n",
       "1        Albany      16111\n",
       "2       Beijing      27237\n",
       "3    Birmingham      18454\n",
       "4      Brooklyn      22927\n",
       "5     Cambridge      16448\n",
       "6       Chengdu      20636\n",
       "7       Chicago      21375\n",
       "8      Columbus      17496\n",
       "9      Dongguan      23151\n",
       "10    Guangzhou      18133\n",
       "11    Leicester      21251\n",
       "12    Liverpool      15915\n",
       "13       London      16105\n",
       "14  Los Angeles      22634\n",
       "15   Manchester      17019\n",
       "16       Nagoya      15340\n",
       "17         Nara      15443\n",
       "18     New York      17384\n",
       "19        Osaka      24856\n",
       "20       Oxford      19202\n",
       "21      Sapporo      16229\n",
       "22     Shanghai      21866\n",
       "23     Shenzhen      24154\n",
       "24        Tokyo      18043\n",
       "25    Zhongshan      12845"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>city</th>\n",
       "      <th>count_sum</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Akron</td>\n",
       "      <td>19677</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Albany</td>\n",
       "      <td>16111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Beijing</td>\n",
       "      <td>27237</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Birmingham</td>\n",
       "      <td>18454</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Brooklyn</td>\n",
       "      <td>22927</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Cambridge</td>\n",
       "      <td>16448</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Chengdu</td>\n",
       "      <td>20636</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Chicago</td>\n",
       "      <td>21375</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Columbus</td>\n",
       "      <td>17496</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Dongguan</td>\n",
       "      <td>23151</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>Guangzhou</td>\n",
       "      <td>18133</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>Leicester</td>\n",
       "      <td>21251</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>Liverpool</td>\n",
       "      <td>15915</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>London</td>\n",
       "      <td>16105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>Los Angeles</td>\n",
       "      <td>22634</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>Manchester</td>\n",
       "      <td>17019</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>Nagoya</td>\n",
       "      <td>15340</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>Nara</td>\n",
       "      <td>15443</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>New York</td>\n",
       "      <td>17384</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>Osaka</td>\n",
       "      <td>24856</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>Oxford</td>\n",
       "      <td>19202</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>Sapporo</td>\n",
       "      <td>16229</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>Shanghai</td>\n",
       "      <td>21866</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>Shenzhen</td>\n",
       "      <td>24154</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>Tokyo</td>\n",
       "      <td>18043</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>Zhongshan</td>\n",
       "      <td>12845</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 10
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": "",
   "id": "1b31a48de0b6ca8a"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
